As is known, analog programming of a memory cell consists of modifying to a desired analog value the threshold voltage value of the cell (i.e., the minimum voltage to be applied between the gate terminals and the source of the cell itself, in order for the cell to begin to conduct current). Programming is currently carried out in a memory array by connecting the gate terminal of the cell to be programmed to a reference voltage, the drain terminal to a high programming voltage, and the source terminal to ground. Since the programming is a non-reproducible process, it is carried out in multi-level memories by providing a plurality of programming pulses of short duration, and by reading the threshold voltage value reached by the cell at the end of each programming pulse (verify step). In general during each programming pulse, the gate terminal of the cell to be programmed is supplied with a high programming voltage. In general the programming process is preceded by a cell erasing step, such that the cells have a low initial threshold voltage (lower than the minimum analog value to be stored) and each programming pulse gives rise to an increase of the threshold voltage of the cell; when the desired threshold voltage is reached, the programming process is interrupted. Generally speaking therefore, programming is carried out at present by gradually modifying the initial threshold voltage value through short programming pulses, followed by reading the reached level, until the desired level is obtained.
In order to avoid programming the cell excessively, the programming pulses are short, as indicated above, such that when a cell must sustain a large threshold jump, the described process requires a large number of programming/reading cycles, and thus involves a considerable programming time.